const logger = require('koa-logger')
const session = require('koa-session')
const koaBody = require('koa-body')
const compress = require('koa-compress')
const serve = require('koa-static')
const path = require('path')

const main = serve(path.resolve(__dirname, '../../webapps'))

export function general(app) {
  app.keys = ['timoodada']
  app.use(logger())
  app.use(compress({
    filter: function (content_type) {
      return /text|javascript|json/i.test(content_type)
    },
    threshold: 1024, // bytes
    flush: require('zlib').Z_SYNC_FLUSH
  }))
  app.use(main)
  app.use(koaBody({
    multipart: false
  }))
  app.use(session({
    key: 'koa:sess', // (string) cookie key (default is koa:sess)
    // (number || 'session') maxAge in ms (default is 1 days)
    // 'session' will result in a cookie that expires when session/browser is closed
    // Warning: If a session cookie is stolen, this cookie will never expire
    maxAge: 86400000,
    autoCommit: true, // (boolean) automatically commit headers (default true)
    overwrite: true, // (boolean) can overwrite or not (default true)
    httpOnly: true, // (boolean) httpOnly or not (default true)
    signed: true, // (boolean) signed or not (default true)
    rolling: false, // (boolean) Force a session identifier cookie to be set on every response. The expiration is reset to the original maxAge, resetting the expiration countdown. (default is false)
    renew: true // (boolean) renew session when session is nearly expired, so we can always keep user logged in. (default is false)
  }, app))
}
